"""
爬取 https://movie.douban.com/top250链接的 字段数据

标题
评分
链接
简评


爬取流程
抓包
发现数据是html文本格式类型
html专属清洗模块  lxml
下载
pip install lxml 加源

# xpath提取数据语法的核心重点
# 找该目标的上两级目录构建进xpath语法  从而确认数据的准确性
# 重点 提取文本数据用text


"""
import requests
from lxml import etree
# 确认数据包 url
url="https://movie.douban.com/top250"

# 请求头
headers={
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36"
}
# 发送请求获取响应
response=requests.get(url=url,headers=headers)
# 返回响应
data=response.content.decode()

# 由于返回的数据是字符串类型的数据 所以说 要通过xpath语法进行数据提取就必须先转换数据类型
# 即转换为可通过xpath提取数据的对象
# print(data)
# 通过etree类的HTML方法 把data字符串类型数据进行转换  返回一个对象 叫element对象html
# [<Element span at 0x1f692189cc8>
html=etree.HTML(data)
# 通过xpath进行数据的提取 语法以字符串形式构建
# 没有匹配到数据返回的是空列表
# 标题
# title=html.xpath('//div[@class="hd"]/a/span[1]/text()')
# print(title)
# # 通过节点确认数据必须要加中括号 里面再加对应的数据标签
# # 链接   注意html没有提示xapth 以及 语法构建都用单引号
# # 重点 提取属性数据要加上@ 加上nodename
# link=html.xpath('//div[@class="info"]/div[1]/a/@href')
# print(link)
# # 评分
score=html.xpath('//div[@class="bd"]/div/span[2]/text()')
# print(score)
# # 简评
jianpin=html.xpath('//*[@id="35448384"]/ul/li[*]/a/@href')
#
# print(jianpin)

# html对象在没有进行数据提取操作即（text或者@nodename）操作之前 是支持遍历的
# 以及可以二次的xpath数据提取


# title=html.xpath('//div[@class="hd"]/a/span[1]')
# print(len(title),title)

nodess=html.xpath('//div[@class="bd"]')
print(len(nodess))
for node in nodess:
    score=node.xpath('./div/span[2]/text()')
    jianpin=node.xpath('./p[2]/span/text()')
    print(score)
    print(jianpin)







